Bug 673422 - Babl C type not accessible to introspection bindings
authorJon Nordby <jononor@gmail.com>
Fri, 27 Jul 2012 20:00:46 +0000 (22:00 +0200)
committerJon Nordby <jononor@gmail.com>
Fri, 27 Jul 2012 20:45:23 +0000 (22:45 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=673422
Annotate Babl C type to be Babl.Object in GIR using the
"rename to" annotation in GI 1.33.5+. For earlier versions,
use a static .gir file to achieve the same.

babl/Babl-0.1.gir.static [new file with mode: 0644]
babl/Makefile.am
babl/babl-types.h
configure.ac

diff --git a/babl/Babl-0.1.gir.static b/babl/Babl-0.1.gir.static
new file mode 100644 (file)
index 0000000..7481f62
--- /dev/null
@@ -0,0 +1,457 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <namespace name="Babl"
+             version="0.1"
+             shared-library="libbabl-0.1.so.0"
+             c:identifier-prefixes="Babl"
+             c:symbol-prefixes="babl">
+    <record name="BablObject" c:type="Babl" disguised="1">
+      <doc xml:whitespace="preserve">The babl API is based around polymorphism and almost everything is
+a Babl object.</doc>
+    </record>
+    <callback name="FuncLinear" c:type="BablFuncLinear">
+      <return-value transfer-ownership="none">
+        <type name="glong" c:type="long"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="glong" c:type="long"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="FuncPlanar" c:type="BablFuncPlanar">
+      <return-value transfer-ownership="none">
+        <type name="glong" c:type="long"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_bands" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="src_pitch" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_bands" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="dst_pitch" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="glong" c:type="long"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="7">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="MAJOR_VERSION" value="0" c:type="BABL_MAJOR_VERSION">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="11" c:type="BABL_MICRO_VERSION">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="1" c:type="BABL_MINOR_VERSION">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="component"
+              c:identifier="babl_component"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="component_new"
+              c:identifier="babl_component_new"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="first_arg" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="conversion_new"
+              c:identifier="babl_conversion_new"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="first_arg" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="exit" c:identifier="babl_exit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="fish" c:identifier="babl_fish" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source_format" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destination_format" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format" c:identifier="babl_format" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_bytes_per_pixel"
+              c:identifier="babl_format_get_bytes_per_pixel"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_model"
+              c:identifier="babl_format_get_model"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_n_components"
+              c:identifier="babl_format_get_n_components"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_type"
+              c:identifier="babl_format_get_type"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+        <parameter name="component_index" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_has_alpha"
+              c:identifier="babl_format_has_alpha"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_format_n"
+              c:identifier="babl_format_is_format_n"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_palette"
+              c:identifier="babl_format_is_palette"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_n" c:identifier="babl_format_n" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+        <parameter name="components" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_new"
+              c:identifier="babl_format_new"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="first_arg" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_name" c:identifier="babl_get_name" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="const char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="babl" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_user_data"
+              c:identifier="babl_get_user_data"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="babl" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_version" c:identifier="babl_get_version">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" transfer-ownership="none">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="minor" transfer-ownership="none">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="micro" transfer-ownership="none">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init" c:identifier="babl_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="model" c:identifier="babl_model" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="model_new"
+              c:identifier="babl_model_new"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="first_arg" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="new_palette"
+              c:identifier="babl_new_palette"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="format_u8" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl**"/>
+        </parameter>
+        <parameter name="format_u8_with_alpha" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="palette_reset"
+              c:identifier="babl_palette_reset"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="babl" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="palette_set_palette"
+              c:identifier="babl_palette_set_palette"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="babl" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="process" c:identifier="babl_process" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="glong" c:type="long"/>
+      </return-value>
+      <parameters>
+        <parameter name="babl_fish" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destination" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="glong" c:type="long"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sampling" c:identifier="babl_sampling" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="horizontal" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="vertical" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_user_data"
+              c:identifier="babl_set_user_data"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="babl" transfer-ownership="none">
+          <type name="BablObject" c:type="const Babl*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type" c:identifier="babl_type" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_new" c:identifier="babl_type_new" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BablObject" c:type="const Babl*"/>
+      </return-value>
+      <parameters>
+        <parameter name="first_arg" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
index 03115a3b2eb19a93eda675a4fbc0ab6d223de482..d5cf9500a416c44d17f9bb1082c724a868486f6a 100644 (file)
@@ -93,6 +93,8 @@ INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir)
 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
 
 if HAVE_INTROSPECTION
+
+if HAVE_GI_RENAME_TO
 Babl-$(BABL_API_VERSION).gir: $(G_IR_SCANNER) $(library_include_HEADERS) $(c_sources) $(srcdir)/Makefile.am libbabl-@BABL_API_VERSION@.la
        $(INTROSPECTION_SCANNER) -v --namespace Babl --nsversion=$(BABL_API_VERSION) \
             --add-include-path=$(srcdir) --add-include-path=. \
@@ -106,6 +108,15 @@ Babl-$(BABL_API_VERSION).gir: $(G_IR_SCANNER) $(library_include_HEADERS) $(c_sou
            $(addprefix $(builddir)/, $(libinc_generated_hdrs)) \
            $(addprefix $(srcdir)/, $(c_sources))
 
+else # HAVE_GI_RENAME_TO
+# If the "rename to" gobject introspection annotation is not respected (GI <= 1.33.4)
+# we have to use a pre-generated .gir file. See https://bugzilla.gnome.org/show_bug.cgi?id=673422
+# and https://bugzilla.gnome.org/show_bug.cgi?id=675985
+Babl-$(BABL_API_VERSION).gir:
+       cp $@.static $@
+
+endif # HAVE_GI_RENAME_TO
+
 girdir = $(datadir)/gir-1.0
 gir_DATA = Babl-$(BABL_API_VERSION).gir
 
index 9729e0480f85d241db192b5e7c7d924c568bd8d0..62c0c4a9a256cf0a704adb55a29cc52778e51abd 100644 (file)
 #error "babl-version.h must not be included directly, include babl.h instead."
 #endif
 
-
 /**
+ * Babl:
+ *
  * The babl API is based around polymorphism and almost everything is
  * a Babl object.
- */
+ *
+ * Rename to: BablObject
+ **/
 typedef union _Babl Babl;
 
 /* Conversion function between linear data of a either a data types or
index 1bf9a7162164b0be3890a540cc41294a8921ea4a..12cc388a620daab83c6626fb895d2063d1138e06 100644 (file)
@@ -64,6 +64,13 @@ AC_SUBST(BABL_RELEASE)
 # GObject Introspection
 GOBJECT_INTROSPECTION_CHECK([0.10])
 
+# Check whether g-ir-scanner respects "rename to" annotation
+PKG_CHECK_MODULES([GI_1_33_5], [gobject-introspection-1.0 >=1.33.5],
+   [have_gi_rename_to=true],
+   [have_gi_rename_to=false]
+)
+AM_CONDITIONAL(HAVE_GI_RENAME_TO, [test x$have_gi_rename_to = xtrue])
+
 # Vala
 AC_ARG_WITH(vala, [  --without-vala         build without Vala support])